# -*- codeing = utf-8 -*-
# @Time : 2021/2/26 15:55
# @Atuthor: 朱朱
# @File: 112类方法和静态方法.py
# @Software: PyCharm
class Person(object):
    type = 'human'

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def eat(self, food):
        print(self.name+'正在吃'+food)

    # 如果一个方法,没有用到实例对象的任何属性,可以将这个方法设置为静态方法
    @staticmethod
    def demo():
        print('hello')

    # 如果一个方法,只用到了属性,可以将这个方法设置为类方法
    @classmethod
    def test(cls): # 类方法会有一个参数,不需要手动传参,会自动传参
        print(cls.type)
        print('yes')

p1 = Person('jack',18)
p2 = Person('tony',18)
# 实例对象在调用方法时,会自动把实例对象传递给self

Person.demo()
p1.demo()
# 静态方法没有用到实例对象的任何属性

Person.eat(p1,'大骨头') # 类对象直接接调用,需要手动给self传递参数
print(Person.eat)


Person.test()
p1.test()
# 类方法可以使用实例对象和类对象调用